/*******************************************************************************
 * Copyright (c) Jerges A. Bello G. 2014. Reservado todos los derechos.
 ******************************************************************************/
package com.jabex.persistence.dao;

import java.util.List;

import org.hibernate.HibernateException;
import org.springframework.stereotype.Component;

import com.jabex.common.exceptions.ErrorFunctionalException;
import com.jabex.common.exceptions.ErrorOperationalException;
import com.jabex.common.exceptions.WarningFunctionalException;
import com.jabex.common.to.MessageTO;
import com.jabex.persistence.model.Product;

/**
 * Created by Jerges Bello on 14/05/2014.
 */
@Component("IProductDAO")
public interface IProductDAO extends IAccessDAO<Product> {
	public static final String MODEL_NAME = "productDao";

	public MessageTO insertProduct(Product product) throws WarningFunctionalException, ErrorFunctionalException, ErrorOperationalException, HibernateException;

	public MessageTO deleteProduct(int id) throws WarningFunctionalException, ErrorFunctionalException, ErrorOperationalException, HibernateException;

	public MessageTO updateProduct(Product product) throws WarningFunctionalException, ErrorFunctionalException, ErrorOperationalException, HibernateException;

	public Product getProductById(int id) throws WarningFunctionalException, ErrorFunctionalException, ErrorOperationalException, HibernateException;

	public List<Product> getAllProduct() throws WarningFunctionalException, ErrorFunctionalException, ErrorOperationalException, HibernateException;


}
